#!/bin/bash
# badname.sh
# 删除当前目录下文件铝包含一些特殊字符的文件(这些特殊字符批的是不应该出现在文件名中的字符)

for filename in *
do
    badname=`echo "$filename" | sed -n /[\+\{\;\"\\\=\?~\(\)\<\>\&\*\|\$\}]/p`
#   badname=`echo "$filename" | sed -n '/[+{;"\=?~()<>&*|$"}]/p'`
#
rm $badname 2>/dev/null
#           ___________        错误消息将被屏蔽
done

# 现在,处理文件名以任何方式包含空白的文件。
find . -name '* *' -exec rm -f {} \;
# "find"命令 匹配到的目录名将替换到'{}'的位置。
# '\'是为了保证';'被正确的转义，并且放到命令的结尾。

exit 0

# ================================================================================
# 这行下边的命令将不会运行，因为有'exit'命令
find . -name '*[+{;"\\=?~()<>&*|$ "}]*' - exec rm -f '{}' \;


